using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class Compras_PedidoCotizacion : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        lb_fechaAgregar.Text = DateTime.Now.ToString();
        tb_fechaBuscar.Focus();
        lb_fechaInvalida.Visible = false;
        ib_popUpProveedor.Focus();
        lb_infBorrar.Visible = false;
        lb_aviso.Visible = false;
    }
    protected void mostrarTodosLosPedidos()
    {
        SqlDataSource_PedidoCotizaciones.SelectParameters.Clear();
        SqlDataSource_PedidoCotizaciones.SelectCommand = "Select DISTINCT Pedido_Cotizaciones.[cod_pedido_cotizacion] as NroPedido, Pedido_Cotizaciones.[fecha], Pedido_Cotizaciones.[cod_proveedor], Proveedores.[nombre_empresa] FROM Pedido_Cotizaciones join Detalles_Pedidos_Cotizaciones ON (Pedido_Cotizaciones.cod_pedido_cotizacion = Detalles_Pedidos_Cotizaciones.cod_pedido_cotizacion) join Proveedores ON (Pedido_Cotizaciones.cod_proveedor= Proveedores.cod_proveedor) ";
        gv_PedidoCotizaciones.DataBind();

    }
    /*Metodo para buscar pedido de cotizacion*/
    protected void buscarPedidoCotizacion(string tabla, string columna, string ingresado)
    {
        SqlDataSource_PedidoCotizaciones.SelectParameters.Clear();
        SqlDataSource_PedidoCotizaciones.SelectCommand = "Select Pedido_Cotizaciones.[cod_pedido_cotizacion] as NroPedido, "+
            "Pedido_Cotizaciones.[fecha], Pedido_Cotizaciones.[cod_proveedor], Proveedores.[nombre_empresa], "+
            "Detalles_Pedidos_Cotizaciones.[cod_producto],Productos.[nombre],Modelo_Productos.[descripcion] as Modelo, "+
            "Marcas.[descripcion] as Marca, Familias_Productos.[descripcion] as Familia from Pedido_Cotizaciones "+
            "join Detalles_Pedidos_Cotizaciones ON (Pedido_Cotizaciones.cod_pedido_cotizacion = Detalles_Pedidos_Cotizaciones.cod_pedido_cotizacion) "+
            "join Proveedores ON (Pedido_Cotizaciones.cod_proveedor= Proveedores.cod_proveedor) "+
            "join Productos ON (Detalles_Pedidos_Cotizaciones.cod_producto = Productos.cod_producto) "+
            "join Marcas ON (Productos.cod_marca=Marcas.cod_marca) "+
            "join Modelo_Productos ON (Productos.cod_modelo=Modelo_Productos.cod_modelo) "+
            "join Familias_Productos ON (Productos.cod_familia_producto = Familias_Productos.cod_familia_producto)"+
            "WHERE " + tabla + ".[" + columna + "] like @" + columna;

        SqlDataSource_PedidoCotizaciones.SelectParameters.Add(columna, TypeCode.String, "%");
        SqlDataSource_PedidoCotizaciones.SelectParameters[columna].DefaultValue = ingresado + "%";
        gv_PedidoCotizaciones.DataBind();

    
    }
    protected void buscarPedidoCotizacionFecha(string fecha)
    {
        Page.Validate("formatoFecha");
        if (Page.IsValid)
        {
            SqlDataSource_PedidoCotizaciones.SelectParameters.Clear();
            SqlDataSource_PedidoCotizaciones.SelectCommand = "Select DISTINCT Pedido_Cotizaciones.[cod_pedido_cotizacion] as NroPedido, Pedido_Cotizaciones.[fecha], Pedido_Cotizaciones.[cod_proveedor], Proveedores.[nombre_empresa] FROM Pedido_Cotizaciones join Detalles_Pedidos_Cotizaciones ON (Pedido_Cotizaciones.cod_pedido_cotizacion = Detalles_Pedidos_Cotizaciones.cod_pedido_cotizacion) join Proveedores ON (Pedido_Cotizaciones.cod_proveedor= Proveedores.cod_proveedor) " +
                "WHERE CONVERT(varchar,fecha,103) = CONVERT(varchar, @fecha ,103)";

            SqlDataSource_PedidoCotizaciones.SelectParameters.Add("fecha", TypeCode.DateTime, "%");
            SqlDataSource_PedidoCotizaciones.SelectParameters["fecha"].DefaultValue = fecha;
            gv_PedidoCotizaciones.DataBind();
        }
    }
    /*Metodo para el evento del boton buscar*/
    protected void ib_buscar_Click(object sender, ImageClickEventArgs e)
    {
        int num = 0;
        SqlDataSource_PedidoCotizaciones.SelectParameters.Clear();
        if (tb_fechaBuscar.Text != string.Empty)
        {
            if (num == 0)
            {
                if (Validar.validarFecha(tb_fechaBuscar.Text))
                {
                    SqlDataSource_PedidoCotizaciones.SelectCommand = "Select DISTINCT Pedido_Cotizaciones.[cod_pedido_cotizacion] as NroPedido, Pedido_Cotizaciones.[fecha], Pedido_Cotizaciones.[cod_proveedor], Proveedores.[nombre_empresa] FROM Pedido_Cotizaciones join Detalles_Pedidos_Cotizaciones ON (Pedido_Cotizaciones.cod_pedido_cotizacion = Detalles_Pedidos_Cotizaciones.cod_pedido_cotizacion) join Proveedores ON (Pedido_Cotizaciones.cod_proveedor= Proveedores.cod_proveedor) " +
                    " WHERE CONVERT(varchar,fecha,103) = CONVERT(varchar, @fecha ,103) ";
                    SqlDataSource_PedidoCotizaciones.SelectParameters.Add("fecha", TypeCode.DateTime, "%");
                    SqlDataSource_PedidoCotizaciones.SelectParameters["fecha"].DefaultValue = tb_fechaBuscar.Text;

                    num++;
                }
                else
                {
                    lb_fechaInvalida.Visible = true;
                }
            }
            else
            {
                SqlDataSource_PedidoCotizaciones.SelectCommand += " and CONVERT(varchar,fecha,103) = CONVERT(varchar, @fecha ,103)";

                SqlDataSource_PedidoCotizaciones.SelectParameters.Add("fecha", TypeCode.DateTime, "%");
                SqlDataSource_PedidoCotizaciones.SelectParameters["fecha"].DefaultValue = tb_fechaBuscar.Text;
                num++;
            }
            
        }
        if (tb_nroPedido.Text != string.Empty)
        {
            if (num == 0)
            {
                
                SqlDataSource_PedidoCotizaciones.SelectCommand = "Select DISTINCT Pedido_Cotizaciones.[cod_pedido_cotizacion] as NroPedido, Pedido_Cotizaciones.[fecha], Pedido_Cotizaciones.[cod_proveedor], Proveedores.[nombre_empresa] FROM Pedido_Cotizaciones join Detalles_Pedidos_Cotizaciones ON (Pedido_Cotizaciones.cod_pedido_cotizacion = Detalles_Pedidos_Cotizaciones.cod_pedido_cotizacion) join Proveedores ON (Pedido_Cotizaciones.cod_proveedor= Proveedores.cod_proveedor) "+
                    "WHERE Pedido_Cotizaciones.cod_pedido_cotizacion like '"+tb_nroPedido.Text+"%'";
                num++;
            }
            else
            {
                SqlDataSource_PedidoCotizaciones.SelectCommand += " AND Pedido_Cotizaciones.cod_pedido_cotizacion like '" + tb_nroPedido.Text + "%'";
                num++;
            }
        }
       if(tb_proveedorBuscar.Text != string.Empty)
        {
            if (num == 0)
            {
                SqlDataSource_PedidoCotizaciones.SelectCommand = "Select DISTINCT Pedido_Cotizaciones.[cod_pedido_cotizacion] as NroPedido, Pedido_Cotizaciones.[fecha], Pedido_Cotizaciones.[cod_proveedor], Proveedores.[nombre_empresa] FROM Pedido_Cotizaciones join Detalles_Pedidos_Cotizaciones ON (Pedido_Cotizaciones.cod_pedido_cotizacion = Detalles_Pedidos_Cotizaciones.cod_pedido_cotizacion) join Proveedores ON (Pedido_Cotizaciones.cod_proveedor= Proveedores.cod_proveedor) " +
                    "WHERE Proveedores.nombre_empresa like '" + tb_proveedorBuscar.Text + "%'";
                num++;
            }
            else
            {
                SqlDataSource_PedidoCotizaciones.SelectCommand += " AND Proveedores.nombre_empresa like '" + tb_proveedorBuscar.Text + "%'";
                num++;
              
            }
        }
        if (tb_fechaBuscar.Text.Equals("") && tb_nroPedido.Text.Equals("") && tb_proveedorBuscar.Text.Equals("") && tb_marcaBuscar.Text.Equals(""))
        {
            mostrarTodosLosPedidos();
        }
        gv_PedidoCotizaciones.DataBind();
        
    }
    protected void ib_cancelarBuscar_Click(object sender, ImageClickEventArgs e)
    {
        tb_fechaBuscar.Text = string.Empty;
        tb_proveedorBuscar.Text = string.Empty;
        tb_nroPedido.Text = string.Empty;
        tb_marcaBuscar.Text = string.Empty;
        tb_familiaProductoBuscar.Text = string.Empty;
        gv_PedidoCotizaciones.DataBind();
    }
    protected void ib_agregarCotizacionn_Click(object sender, ImageClickEventArgs e)
    {
        fs_buscarPedidoCotizacion.Visible = false;
        div_agregarPedidoCotizacion.Visible = true;
    }
    protected void gvPedidoCotizaciones_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        gv_PedidoCotizaciones.SelectedIndex = Convert.ToInt32(e.CommandArgument);
        GridViewRow row = gv_PedidoCotizaciones.SelectedRow;
        int cod_pedido = Convert.ToInt32(row.Cells[0].Text);
        if (e.CommandName == "Ver")
        {
            SqlDataSource_Detalles.SelectParameters.Clear();
            SqlDataSource_Detalles.SelectCommand = "SELECT Detalles_Pedidos_Cotizaciones.[nro_renglon], Detalles_Pedidos_Cotizaciones.[cod_pedido_cotizacion] as NroPedido, Detalles_Pedidos_Cotizaciones.[cod_producto], Productos.[nombre] as Descripcion ,Modelo_Productos.[descripcion] as Modelo, Marcas.[descripcion] as Marca, Detalles_Pedidos_Cotizaciones.[cantidad] FROM Detalles_Pedidos_Cotizaciones JOIN Productos ON (Productos.cod_producto=Detalles_Pedidos_Cotizaciones.cod_producto) JOIN Modelo_Productos ON (Modelo_Productos.cod_modelo=Productos.cod_modelo) JOIN Marcas ON (Marcas.cod_marca=Productos.cod_marca) WHERE Detalles_Pedidos_Cotizaciones.cod_pedido_cotizacion =" + cod_pedido;
            gv_detalles.DataBind();
            div_buscarPedido.Visible = false;
            div_detallesPedidosCotizaciones.Visible = true;
        }if(e.CommandName=="Borrar"){
            try
            {
                PedidoCotizaciones.borrarPedidoCotizacion(cod_pedido);
            }
            catch (Exception error)
            {
                lb_infBorrar.Text = "No se puede borrar porque esta siendo usado";
                lb_infBorrar.Visible = true;
            }
        }

    }/*Metodo para ocutar el gridView*/
    protected void ib_ocultarDetalles_Click(object sender, ImageClickEventArgs e)
    {
        div_detallesPedidosCotizaciones.Visible = false;
        div_buscarPedido.Visible = true;
    }
    /*********************************
     *      PopUp Productos
     *********************************/
    protected void ib_popUpProducto_Click(object sender, ImageClickEventArgs e)
    {
        mpe_productos.Show();
        //ib_guardarPedido.Enabled = false;
        //lb_aviso.Text = "No ha seleccionado ningun producto. La cantidad debe ser mayor a 0";
        //lb_aviso.Visible = true;
    }
    protected void actualizarDetalle(int codPedido)
    {
        SqlDataSource_DetallePedidoCotizacion.SelectParameters.Clear();
        SqlDataSource_DetallePedidoCotizacion.SelectCommand = "SELECT Detalles_Pedidos_Cotizaciones.[nro_renglon], Detalles_Pedidos_Cotizaciones.[cod_pedido_cotizacion] as NroPedido, Detalles_Pedidos_Cotizaciones.[cod_producto], Productos.[nombre] as Descripcion ,Modelo_Productos.[descripcion] as Modelo, Marcas.[descripcion] as Marca, Detalles_Pedidos_Cotizaciones.[cantidad] FROM Detalles_Pedidos_Cotizaciones JOIN Productos ON (Productos.cod_producto=Detalles_Pedidos_Cotizaciones.cod_producto) JOIN Modelo_Productos ON (Modelo_Productos.cod_modelo=Productos.cod_modelo) JOIN Marcas ON (Marcas.cod_marca=Productos.cod_marca) where Detalles_Pedidos_Cotizaciones.[cod_pedido_cotizacion] = " + codPedido;
        gv_detallesPedidoCotizacion.DataBind();
        gv_detallesPedidoCotizacion.Visible = true;
    }
    /*Metodo para agregar cabecera*/
    protected void agregarCabeceraPedidoCotizacion(int codProveedor)
    {
        try
        {
            PedidoCotizaciones.agregarPedidoCotizacion(codProveedor);
            Auditoria.guardarEvento(Session["usuario"].ToString(), codProveedor.ToString(), "-", "-", "Pedido de Cotizacion", "Codigo Proveedor");


            gv_PedidoCotizaciones.DataBind();
        }
        catch (Exception error)
        {
            lb_aviso.Text=error.Message.ToString();
            lb_aviso.Visible = true;


        }

       
        String cadena = (String)ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection conexion = new SqlConnection(cadena);
        SqlCommand pedido = new SqlCommand("Select max(cod_pedido_cotizacion) from Pedido_Cotizaciones", conexion);
        try
        {
            conexion.Open();
            pedido.Connection = conexion;
            pedido.CommandType = CommandType.Text;
            SqlDataReader read1 = pedido.ExecuteReader();
            read1.Read();
            string respuesta = read1.GetValue(0).ToString();
            read1.Close();
            lb_codPedidoCotizacionAgregar.Text = respuesta;
            lb_codPedidoCotizacionAgr.Visible = true;
            //lb_codigoCotizacion.Text = respuesta;
           
        }
        catch (Exception error)
        {
            lb_aviso.Text = error.Message.ToString();
            lb_aviso.Visible = true;

        }
        finally
        {
            conexion.Close();
            //tb_codPedidoCotizacionAgregar.Enabled = false;
            lb_fechaAgregar.Enabled = false;
            tb_codProveedorAgregar.Enabled = false;
            ib_popUpProveedor.Enabled = false;
        }
    }
    /*Metodo para agregar detalles*/
    protected void agregarDetallesPedidoCotizacion(int cod_pedido_cotizacion,int cod_producto, int cantidad)
    {
        try
        {
            PedidoCotizaciones.agregarDetallesPedidosCotizaciones(cod_pedido_cotizacion, cod_producto, cantidad);
            Auditoria.guardarEvento(Session["usuario"].ToString(), cod_pedido_cotizacion.ToString(), "-", "-", "Pedido de Cotizacion", "Codigo Cotizacion");
            Auditoria.guardarEvento(Session["usuario"].ToString(), cod_producto.ToString(), "-", "-", "Pedido de Cotizacion", "Codigo Producto");
            Auditoria.guardarEvento(Session["usuario"].ToString(), cantidad.ToString(), "-", "-", "Pedido de Cotizacion", "Cantidad");




        }
        catch (Exception error)
        {
            lb_aviso.Text = error.Message.ToString();
            lb_aviso.Visible = true;

        }
    }
 
    /*Metodo para agregar pedidoCotizacion*/
    protected void agregarPedidoCotizacion(int cod_proveedor, int cod_pedido_cotizacion,int cod_producto, int cantidad)
    {
        if (lb_codPedidoCotizacionAgregar.Text != string.Empty)
        {
            agregarDetallesPedidoCotizacion(cod_pedido_cotizacion, cod_producto, cantidad);
        }
        else
        {
            agregarCabeceraPedidoCotizacion(cod_proveedor);
            agregarDetallesPedidoCotizacion(cod_pedido_cotizacion, cod_producto, cantidad);
        }
        
    }
    protected void actualizarDetallesPedido(int cod_pedido)
    {
        SqlDataSource_DetallePedidoCotizacion.SelectParameters.Clear();
        SqlDataSource_DetallePedidoCotizacion.SelectCommand = "SELECT Detalles_Pedidos_Cotizaciones.[nro_renglon], Detalles_Pedidos_Cotizaciones.[cod_pedido_cotizacion] as NroPedido, Detalles_Pedidos_Cotizaciones.[cod_producto], Productos.[nombre] as Descripcion ,Modelo_Productos.[descripcion] as Modelo, Marcas.[descripcion] as Marca, Detalles_Pedidos_Cotizaciones.[cantidad] FROM Detalles_Pedidos_Cotizaciones JOIN Productos ON (Productos.cod_producto=Detalles_Pedidos_Cotizaciones.cod_producto) JOIN Modelo_Productos ON (Modelo_Productos.cod_modelo=Productos.cod_modelo) JOIN Marcas ON (Marcas.cod_marca=Productos.cod_marca) WHERE Detalles_Pedidos_Cotizaciones.cod_pedido_cotizacion =" + cod_pedido;
        gv_detallesPedidoCotizacion.DataBind();
        gv_detallesPedidoCotizacion.Visible = true;
    }
    protected void gvDetallesPedidoCotizacion_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        gv_detallesPedidoCotizacion.SelectedIndex = Convert.ToInt32(e.CommandArgument);
        GridViewRow row = gv_detallesPedidoCotizacion.SelectedRow;
        int codPedido = Convert.ToInt32(row.Cells[1].Text);
        if (e.CommandName == "Delete")
        {
            actualizarDetallesPedido(codPedido);
        }
    }
    /******************************************
     *  Metodos para el popUp de Productos
     * ****************************************/

    /* Metodo para mostrar en el gridView de detalles las filas seleccionadas del
     * gridView de productos
     */
    protected void ib_agregarSeleccionados_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            Page.Validate("agregarPedidoCotizacion");
            if (Page.IsValid)
            {
                int codProveedor = Convert.ToInt32(tb_codProveedorAgregar.Text.ToString());
                if (lb_codPedidoCotizacionAgregar.Text.Equals(""))
                {
                    agregarCabeceraPedidoCotizacion(codProveedor);

                }
                foreach (GridViewRow row in gv_productos.Rows)
                {
                    int codPedido = Convert.ToInt32(lb_codPedidoCotizacionAgregar.Text);
                    CheckBox chkbox = (CheckBox)row.FindControl("chb_productos");
                    TextBox tbCantidad = (TextBox)row.FindControl("tb_cantidadGv");
                    if (tbCantidad.Text.Equals(""))
                    {
                        tbCantidad.Text = "0";
                    }
                    /*Label label1 = GridView1.Rows[e.RowIndex].FindControl("Label1") as Label;*/
                    string cant = tbCantidad.Text;
                    //if (chkbox.Checked)
                    if (Convert.ToInt32(tbCantidad.Text) > 0)
                    {
                        ib_guardarPedido.Enabled = true;
                        lb_aviso.Text = "";
                        lb_aviso.Visible = false;
                        lb_codProducto.Text = row.Cells[0].Text;
                        int codProducto = Convert.ToInt32(lb_codProducto.Text);
                        int cantidad = Convert.ToInt32(cant);
                        try
                        {
                            agregarDetallesPedidoCotizacion(codPedido, codProducto, cantidad);
                            actualizarDetalle(Convert.ToInt32(lb_codPedidoCotizacionAgregar.Text));
                        }
                        catch (Exception error)
                        {
                            lb_aviso.Text = error.Message.ToString();
                            lb_aviso.Visible = true;
                        }
                    }

                    
                }
                ib_cancelarPedido.Visible = true;
                ib_guardarPedido.Focus();
                ib_guardarPedido.Visible = true;
                mpe_productos.Hide();
                limpiarCamposPopUpProductos();
                mostrarTodosLosProductos();
            }
        }catch(Exception error){
            lb_infPopUpProductos.Text = "No se ha seleccionado ningun producto";
            lb_infPopUpProductos.Visible = true;
        }
    }
    protected void ib_guardarPedido_Click(object sender, ImageClickEventArgs e)
    {
        limpiar();
        ib_guardarPedido.Visible = false;
        ib_cancelarPedido.Visible = false;
        Response.Redirect("~/Compras/PedidoCotizacion.aspx");
    }
    protected void limpiar()
    {
        lb_codPedidoCotizacionAgregar.Text = string.Empty;
        tb_codProductoPopUp.Text = string.Empty;
        tb_codProveedorAgregar.Text = string.Empty;
        gv_detallesPedidoCotizacion.Visible = false;
        ib_popUpProducto.Enabled = true;
        ib_popUpProveedor.Enabled = true;
        tb_empresaAgregar.Text = string.Empty;
        lb_fechaAgregar.Text = string.Empty;
        lb_aviso.Text = string.Empty;
    }

    protected void limpiarCamposPopUpProductos()
    {
        tb_codProductoPopUp.Text = string.Empty;
        tb_codProveedorPopUp.Text = string.Empty;
        tb_familiaProdutoPopUp.Text = string.Empty;
        tb_marcaProductoPopUp.Text = string.Empty;
        tb_modeloProductoPopUp.Text = string.Empty;
        tb_nombreProductoPopUp.Text = string.Empty;
        tb_nroDocumentoPopUpProveedor.Text = string.Empty;
    }
    protected void ib_cancelarProductoPopUp_Click(object sender, ImageClickEventArgs e)
    {
        limpiarCamposPopUpProductos();
        gv_productos.DataBind();
    }
    /*Metodo para buscar productos*/
    protected void buscarProduto(string tabla, string cadena, string ingresado)
    {
        SqlDataSource_Productos.SelectParameters.Clear();
        SqlDataSource_Productos.SelectCommand = "SELECT Productos.cod_producto,Productos.nombre,Marcas.descripcion,Modelo_Productos.descripcion,Familias_Productos.descripcion,Familias_Productos.iva, Productos.precio_venta FROM Productos JOIN Familias_Productos ON Productos.cod_familia_producto= Familias_Productos.cod_familia_producto JOIN Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN Marcas ON Productos.cod_marca = Marcas.cod_marca WHERE " + tabla + "." + cadena + " like @" + cadena;

        SqlDataSource_Productos.SelectParameters.Add(cadena, TypeCode.String, "%");
        SqlDataSource_Productos.SelectParameters[cadena].DefaultValue = ingresado + "%";
        //gv_productos.DataBind();

    }
    /*Metodo para mostrar el popUp de productos*/
    protected void mostrarPopUpProducto()
    {
        mpe_productos.Show();
    }
    protected void mostrarTodosLosProductos()
    {
        SqlDataSource_Productos.SelectParameters.Clear();
        SqlDataSource_Productos.SelectCommand = "SELECT Productos.cod_producto,Productos.nombre,Marcas.descripcion,Modelo_Productos.descripcion,Familias_Productos.descripcion,Familias_Productos.iva, Productos.precio_venta FROM Productos JOIN Familias_Productos ON Productos.cod_familia_producto= Familias_Productos.cod_familia_producto JOIN Modelo_Productos ON Productos.cod_modelo = Modelo_Productos.cod_modelo JOIN Marcas ON Productos.cod_marca = Marcas.cod_marca";
        gv_productos.DataBind();
    }
    protected void ib_buscarProductoPopUp_Click(object sender, ImageClickEventArgs e)
    {
        /*Buscar por codigo del producto*/
        tb_codProductoPopUp.Focus();
        int num = 0;
        if (tb_codProductoPopUp.Text != string.Empty)
        {
            mostrarPopUpProducto();
            buscarProduto("Productos", "cod_producto", tb_codProductoPopUp.Text);
            num++;

        }/*buscar por nombre del producto*/
        if (tb_nombreProductoPopUp.Text != string.Empty)
        {
            if (num == 0)
            {
                buscarProduto("Productos", "nombre", tb_nombreProductoPopUp.Text);
                num++;
            }
            else
            {
                SqlDataSource_Productos.SelectCommand += " and nombre=@nombre";
                SqlDataSource_Productos.SelectParameters.Add("nombre", TypeCode.String, tb_nombreProductoPopUp.Text);
                num++;
            }
            mostrarPopUpProducto();
        }/*buscar por marca del producto*/
        if (tb_marcaProductoPopUp.Text != string.Empty)
        {
            if (num == 0)
            {
                buscarProduto("Marcas", "descripcion", tb_marcaProductoPopUp.Text);
            }
            else
            {
                SqlDataSource_Productos.SelectCommand += " and Marcas.descripcion=@descripcion";
                SqlDataSource_Productos.SelectParameters.Add("descripcion", TypeCode.String, tb_marcaProductoPopUp.Text);
                num++;
            }
            mostrarPopUpProducto();
        }/*buscar por modelo del producto*/
        if (tb_modeloProductoPopUp.Text != string.Empty)
        {
            if (num == 0)
            {

                buscarProduto("Modelo_Productos", "descripcion", tb_modeloProductoPopUp.Text);
            }
            else
            {
                SqlDataSource_Productos.SelectCommand += " and Modelo_Productos.descripcion=@descripcion1";
                SqlDataSource_Productos.SelectParameters.Add("descripcion1", TypeCode.String, tb_modeloProductoPopUp.Text);
                num++;
            }
            mostrarPopUpProducto();

        }/*buscar por familia de producto*/
        if(tb_familiaProdutoPopUp.Text!=string.Empty)
        {
            if (num == 0)
            {

                buscarProduto("Familias_Productos", "descripcion", tb_familiaProdutoPopUp.Text);
            }
            else
            {
                SqlDataSource_Productos.SelectCommand += " and Familias_Productos.descripcion=@descripcion2";
                SqlDataSource_Productos.SelectParameters.Add("descripcion2", TypeCode.String, tb_familiaProdutoPopUp.Text);
                num++;
            }
            mostrarPopUpProducto();
        }
        if (tb_codProductoPopUp.Text.Equals("") && tb_nombreProductoPopUp.Text.Equals("") && tb_marcaProductoPopUp.Text.Equals("") && tb_modeloProductoPopUp.Text.Equals("") && tb_familiaProdutoPopUp.Text.Equals(""))
        {
            mostrarTodosLosProductos();
        }
    }
    /***********************************
     * Metodos para popUpProveedores
     * ********************************/

    /*Metodo para buscar Proveedor*/
    protected void buscarProveedor(string cadena, string ingresado)
    {
        SqlDataSource_Proveedores.SelectParameters.Clear();
        SqlDataSource_Proveedores.SelectCommand = "select cod_proveedor, Personas.nombres as Nombres, Personas.apellidos as Apellidos, Proveedores.nro_documento as NroDocumento, Proveedores.cod_tipo_documento as Documento, nombre_empresa as Empresa from Personas join Proveedores on (Personas.cod_tipo_documento=Proveedores.cod_tipo_documento and Personas.nro_documento = Proveedores.nro_documento) WHERE Proveedores.[" + cadena + "] like @" + cadena;

        SqlDataSource_Proveedores.SelectParameters.Add(cadena, TypeCode.String, "%");
        SqlDataSource_Proveedores.SelectParameters[cadena].DefaultValue = ingresado + "%";
        gv_proveedores.DataBind();

    }
    protected void mostrarTodosLosProveedores()
    {
        SqlDataSource_Proveedores.SelectParameters.Clear();
        SqlDataSource_Proveedores.SelectCommand = "select cod_proveedor, Personas.nombres as Nombres, Personas.apellidos as Apellidos, Proveedores.nro_documento as NroDocumento, Proveedores.cod_tipo_documento as Documento, nombre_empresa as Empresa from Personas join Proveedores on (Personas.cod_tipo_documento=Proveedores.cod_tipo_documento and Personas.nro_documento = Proveedores.nro_documento)";
        gv_proveedores.DataBind();
    }
    /*Metodo para mostrar popUp de Proveedores*/
    protected void mostrarPopUpProveedores()
    {
        //mpe_productos.Hide();
        mpe_proveedores.Show();
        //fs_proveedores.Visible = true;
        //p_popUpProveedor.Visible = true;
    }
    protected void ib_buscarProveedor_Click(object sender, ImageClickEventArgs e)
    {
        /*Buscar por codigo del proveedor*/
        tb_codProveedorPopUp.Focus();
        if (tb_codProveedorPopUp.Text != string.Empty)
        {
            buscarProveedor("cod_proveedor", tb_codProveedorPopUp.Text);
            mostrarPopUpProveedores();
            
        }/*Buscar por numero de documento*/
        if (tb_nroDocumentoPopUpProveedor.Text != string.Empty)
        {
            buscarProveedor("nro_documento", tb_nroDocumentoPopUpProveedor.Text);
            mostrarPopUpProveedores();
          
        }/*Buscar por nombre de la empresa*/
        if(tb_empresa.Text!=string.Empty)
        {
            buscarProveedor("nombre_empresa", tb_empresa.Text);
            mostrarPopUpProveedores();
        }
        if (tb_codProveedorPopUp.Text.Equals("") && tb_nroDocumentoPopUpProveedor.Text.Equals("") && tb_empresa.Text.Equals(""))
        {
            mostrarTodosLosProveedores();
        }

    }
    /*Se obtienen los datos de la fila seleccionada*/
    protected void gvProveedores_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        gv_proveedores.SelectedIndex = Convert.ToInt32(e.CommandArgument);
        GridViewRow row = gv_proveedores.SelectedRow;
        string cod_proveedor = row.Cells[0].Text;
        string empresa = row.Cells[5].Text;
        if (e.CommandName == "agregar")
        {
            tb_codProveedorAgregar.Text = cod_proveedor;
            tb_empresaAgregar.Text = empresa;
            mpe_proveedores.Hide();
            limpiarCamposPopUpProveedor();
            mostrarTodosLosProveedores();
            ib_popUpProducto.Focus();
        }
        else
        {
            mpe_proveedores.Show();
        }
    }

    protected void ib_popUpProveedor_Click(object sender, ImageClickEventArgs e)
    {
        mostrarTodosLosProveedores();
        mostrarPopUpProveedores();
        tb_codProductoPopUp.Focus();
    }
    protected void limpiarCamposPopUpProveedor()
    {
        tb_nroDocumentoPopUpProveedor.Text = string.Empty;
        tb_empresa.Text = string.Empty;
        tb_codProveedorPopUp.Text = string.Empty;
    }
    protected void ib_cancelarBuscarProveedor_Click(object sender, ImageClickEventArgs e)
    {
        limpiarCamposPopUpProveedor();
        mpe_proveedores.Hide();
        gv_proveedores.DataBind();
    }

    protected void gv_PedidoCotizaciones_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

    /*Metodo que elimina todos los detalles y el pedido de cotizacion con ese codigo
     *@param cod_pedido_cotizacion
     */
    protected void ib_cancelarPedido_Click(object sender, ImageClickEventArgs e)
    {
        int codPedido = Convert.ToInt32(lb_codPedidoCotizacionAgregar.Text);
        try
        {
            PedidoCotizaciones.borrarPedidoCotizacion(codPedido);
            //Auditoria.guardarEvento(Session["usuario"].ToString(), codPedido.ToString(), "-", "-", "Pedido de Cotizacion", "Codigo Cotizacion");

            limpiar();
            ib_cancelarPedido.Visible = false;
            ib_guardarPedido.Visible = false;
            Response.Redirect("~/Compras/PedidoCotizacion.aspx");
        }
        catch (Exception error)
        {
            lb_aviso.Text = "No se puede eliminar porque esta siendo usado";
            lb_aviso.Visible = true;
            //Response.Write("<SCRIPT language=\"javascript\"> window.alert(\"" + error.Message.ToString() + "\") </SCRIPT>");

        }
    }
    protected void ib_reporte_Click(object sender, ImageClickEventArgs e)
    {
        Response.Redirect("~/ReportePedidoCotizacion.aspx");
    }
}
